#ifndef CARDPANEL_H
#define CARDPANEL_H

#include <QWidget>
#include "card.h"
#include "player.h"

/* 扑克牌窗口 */
class CardPanel : public QWidget
{
    Q_OBJECT
public:
    explicit CardPanel(QWidget *parent = nullptr);

    // 设置获取图片
    void setImage(const QPixmap& front, const QPixmap& back);
    // 获取图片（正面）
    QPixmap getImage() const;
    
    // 设置扑克牌是哪一面
    void setFrontSide(bool flag);
    // 判断扑克牌是正面还是反面
    bool isFrontSide() const;
    
    // 记录窗口是否被选中
    void setSelected(bool flag);
    // 判断扑克牌是否被选中
    bool isSelected() const;
    
    // 设置扑克牌的花色及点数
    void setCard(const Card& card);
    // 获取扑克牌的花色及点数
    Card getCard();
    
    // 设置扑克牌的持有者
    void setOwner(Player* player);
    // 获取扑克牌的持有者
    Player* getOwner() const;

    // 模拟扑克牌的点击事件
    void clicked();
    
protected:
    // 重写painEvent
    void paintEvent(QPaintEvent* event);
    // 重写
    void mousePressEvent(QMouseEvent* event);
    // 发射选中鼠标左键的信号
    // void clicked();
    
signals:
    // 选择牌的信号
    void cardSelected(Qt::MouseButton button);

private:
    QPixmap m_front;              // 图片的正面
    QPixmap m_back;               // 图片的反面
    bool m_isfront = true;        // 标记图片的正反面     true表示正面    false表示反面
    bool m_isSelect = false;      // 标记扑克牌是否被选中   true表示被选中 false表示未被选中
    Card m_card;                  //  当前这张牌的属性信息
    Player* m_owner = nullptr;    // 扑克牌的所有者
    
};

#endif // CARDPANEL_H
